const jwt = require('jsonwebtoken')

function sign(option) {
    return jwt.sign(option, '绵绵冰最帅', {
        expiresIn: 86400   // 一天后后期
    })
}

// 检验前端传递的token
function verify() {

    return async (ctx, next) => {
        // 拿到前端发送的请求头里的token

        let jwtToken = ctx.req.headers.authorization
        if (jwtToken) {
            // 判断 token 是否合法
            try {
                const decoded = jwt.verify(jwtToken, '绵绵冰最帅')
                if (decoded.id) { // 合法
                    ctx.userId = decoded.id
                    await next()
                }
            } catch (e) {
                ctx.body = {
                    msg: 'token失效',
                    status: 401
                }
            }
            // 第一次登入token为undefind
        } else {

            ctx.body = {
                msg: '请提供token',
                status: 401
            }
        }
    }
}

module.exports = {
    sign,
    verify
}